import type { Router, LocationQueryRaw } from 'vue-router';
import NProgress from 'nprogress'; // progress bar

import { isLogin } from '@/utils/auth';

export default function setupUserLoginInfoGuard(router: Router) {
  router.beforeEach(async (to, from, next) => {
    NProgress.start();
    if (isLogin()) {
      if (to.name === 'login') {
        next({
          name: 'Monitor',
          query: {
            ...to.query,
          } as LocationQueryRaw,
        });
        return;
      }
      // if (userStore.role) {
      next();
      // } else {
      //   try {
      //     await userStore.info();
      //     next();
      //   } catch (error) {
      //     await userStore.logout();
      //     next({
      //       name: 'login',
      //       query: {
      //         redirect: to.name,
      //         ...to.query,
      //       } as LocationQueryRaw,
      //     });
      //   }
      // }
    } else {
      if (to.name === 'login') {
        next();
        return;
      }
      next({
        name: 'login',
        query: {
          redirect: to.name,
          ...to.query,
        } as LocationQueryRaw,
      });
    }
  });
}
